const spaceName = 'qcjjr' // 该值要跟随当前绑定的云服务空间变化
const custom = { // 本项目额外新增的线索标签。enum将会被多次用到
	"fotype": {
		"bsonType": "int",
		"title": "流水类型",
		"enum": [{
			"text": "CPL进账",
			"value": 11
		}, {
			"text": "CPL出账",
			"value": 51
		}, {
			"text": "CPT进账",
			"value": 12
		}, {
			"text": "CPT出账",
			"value": 52
		}, {
			"text": "CPS进账",
			"value": 13
		}, {
			"text": "CPS出账",
			"value": 53
		}, {
			"text": "解冻",
			"value": 49
		}, {
			"text": "冻结",
			"value": 99
		}],
		"required": true,
		"description": "收入：小于50；支出：大于50"
	},
	"cluepurchase": {
		"bsonType": "string",
		"title": "意向程度",
		"enum": [{
			"text": "三天内",
			"value": "S"
		}, {
			"text": "七天内",
			"value": "A"
		}, {
			"text": "半个月内",
			"value": "B"
		}, {
			"text": "一个月内",
			"value": "C"
		}, {
			"text": "三个月内",
			"value": "D"
		}, {
			"text": "一年以内",
			"value": "E"
		}, {
			"text": "一年以上",
			"value": "F"
		}]
	},
	"cluelabels": {
		"bsonType": "array",
		"arrayType": "string",
		"title": "线索标签",
		"enum": [{
			"text": "加微",
			"value": "WeChat"
		}, {
			"text": "到店",
			"value": "store"
		}, {
			"text": "试驾",
			"value": "drive"
		}, {
			"text": "下单",
			"value": "order"
		}, {
			"text": "交车",
			"value": "car"
		}, {
			"text": "入保",
			"value": "insurance"
		}, {
			"text": "按揭",
			"value": "loan"
		}, {
			"text": "三膜",
			"value": "tinting"
		}, {
			"text": "装甲",
			"value": "armour"
		}, {
			"text": "座套",
			"value": "chair"
		}]
	}
}
/**
 * 这个文件很重要。特别是里面的enum枚举数据，将会是对应类型的源数据。上面部分为不同云服务空间或者项目自定义的部分，下面的内容为通用不更改的部分
 * 
 * 在这里的defaultValue实际不生效。因为记录的defaultValue只是读取源文件
 * 
 * 系统字段说明：
 * bsonType：字段类型。只支持单类型。如string、int、array、object、date、bool
 * title：字段名称
 * description：字段描述
 * required：是否必填。默认false
 * enum：枚举值。当bsonType为int或者string时，表示枚举值单选。当bsonType为array时，表示枚举值可多选
 * foreignKey：联表查询格式。格式为：collectionName.fieldName。该字段格式保持与系统一致：collectionName表示关联的数据库名称，fieldName表示关联数据库的字段名称。但是实际自定义操作时还需要nameKey,fieldKey来确定最终的的联表查询
 * 
 * spaceName：当foreignKey存在时，表示关联的数据库所在的空间名称。默认为当前空间
 * tableName：当foreignKey存在时，表示关联的数据库的名称。默认为foreignKey拆分的collectionName
 * selfField：当foreignKey存在时，表示关联的数据库的字段。默认为foreignKey拆分的fieldName
 * nameKey：当foreignKey存在时，表示关联的数据库的名称字段。默认为name。与selfField配合使用，形成enum中的text：nameKey；value：selfField
 * fieldKey：当foreignKey存在时，表示关联的数据库的值字段，多字段用,隔开。默认不存在，表示查询全部
 * 
 * 其它字段：
 * is_title：是否作为标题。默认false
 * is_thumbnail：是否作为缩略图。默认false
 * is_extra：是否作为额外信息。默认false
 * is_single：在列表时是否单独成一行。默认false
 * can_copy：是否默认显示复制
 * detail_single：在详情时是否单独成一行，该字段与列表的单独成行不太一样，默认自定义组件单独成行，其他组件默认不单独成行
 * custWidth：是否可以自定义作为表头时的宽度。默认都不可以
 * scopedSlot：列表时是否自定义显示。否则不显示
 * 固定字段的处理方式
 * 数据库中的字段属性中若是没有，来这里取。有的话不用来取
 * 特定不显示的内容
 * 	unAdd：仅true时表示新增时不显示。默认显示
 * 	unList：仅true时表示列表时不显示。默认显示
 * 	unAlert：仅true时表示修改时不显示。默认显示
 * 	unDetail：仅true时表示详情时不显示。默认显示
 * showType: 显示模式。
 * 			小于-2：完全不显示；
 * 			-2：只针对系统管理员和客服显示；
 * 			-1：针对项目的管理员和客服显示；
 * 			0：默认完全显示；大于0的标识详情中选择性显示
 * 			1：列表中不显示，一般人详情中显示，项目的管理员和客服显示，系统管理员和客服显示。详情中都显示
 * 			2：列表中不显示，一般人详情中不显示，项目的管理员和客服显示，系统管理员和客服显示。详情中一般管理员才显示
 * 			3：列表中不显示，一般人详情中不显示，项目的管理员和客服也不显示，只针对系统管理员和客服显示。详情中最高管理员才显示
 * 
 * 			11：强制在列表中显示，其它同1。如果是联表数据，则需要查询联表数据后显示
 * 			12：强制在列表中显示，并且是双重联表
 * 
 * 			21：强制在列表中显示，其它同2。如果是联表数据，则需要查询联表数据后显示
 * 			31：强制在列表中显示，其它同3。如果是联表数据，则需要查询联表数据后显示
 * 
 * 			…………，X1~X9，表示几重联表查询
 * disabled：false和0不禁用
 * 			 true和1完全禁用
 * 			 -1：针对修改时禁用。新增时不禁用
 * 			 2：只针对一般用户禁用。项目管理员、客服和系统管理员、客服不禁用
 * 			 3：针对一般客户和项目管理员、客服禁用。系统管理员、客服不禁用
 * dependent：对象。表示依赖于哪些项的值才显示。比如：{type： 1， status：1}：表示只有当type===1&&status===1时才行显示
 * CodeParams：编码模式，只能系统生成，生成完毕后不可修改。
 */
module.exports = {
	"_id": {
		"bsonType": "string",
		"title": "_id",
		"description": "ID，系统自动生成",
		"disabled": true,
		"showType": 3,
		"can_copy": true
	},
	"code": {
		"bsonType": "string",
		"title": "编码",
		"description": "编码只能系统生成，不可任意填写。codeParams是该编码的生成规则，如果存在CodeParams，即表示是系统生成的逻辑",
		"CodeParams": {}
	},
	"target": {
		"bsonType": "string",
		"title": "生效项目",
		"foreignKey": "target.code",
		"nameKey": "name"
	},
	"partya": {
		"bsonType": "string",
		"title": "所属甲方",
		"foreignKey": "partya.code",
		"nameKey": "name"
	},
	"name": {
		"bsonType": "string",
		"title": "名称",
		"is_title": true,
		"required": true
	},
	"phone": {
		"bsonType": "string",
		"title": "电话号码",
		"description": "11位手机号码",
		"pattern": "^0?1[3|4|5|6|7|8|9][0-9]\\d{8}$",
		"errorMessage": "手机号码不合法",
		"is_extra": true
	},
	"gender": {
		"bsonType": "int",
		"title": "性别",
		"enum": [{
			"text": "未知",
			"value": 0
		},{
			"text": "先生",
			"value": 1
		},{
			"text": "女士",
			"value": 2
		}]
	},
	"avatar": {
		"bsonType": "string",
		"format": "url",
		"typeDetail": "image",
		"title": "头像",
		"is_thumbnail": true,
	},
	"lang": {
		"bsonType": "string",
		"title": "语言类型",
		"enum": [{
			"text": "简体",
			"value": "zh_CN"
		},{
			"text": "正体",
			"value": "zh_TW"
		},{
			"text": "英语",
			"value": "en"
		}]
	},
	"class": {
		"bsonType": "string",
		"title": "所属类别",
		"enum": [{
			"text": "默认",
			"value": "默认"
		}]
	},
	"apply": {
		"bsonType": "string",
		"title": "所属应用",
		"enum": [{
			"text": "H5",
			"value": "h5"
		},{
			"text": "微信公众号",
			"value": "wx_h5"
		},{
			"text": "微信小程序",
			"value": "wx_mp"
		},{
			"text": "苹果应用",
			"value": "iOS"
		},{
			"text": "安卓应用",
			"value": "Android"
		}],
		"is_single": true
	},
	"passtype": {
		"bsonType": "string",
		"title": "密码类型",
		"description": "根据设定，将会对password值进行处理后再保存",
		"enum": [{
			"text": "明文密码",
			"value": 0
		},{
			"text": "Base64",
			"value": 1
		},{
			"text": "SHA256",
			"value": 2
		},{
			"text": "AES",
			"value": 3
		},{
			"text": "MD5",
			"value": 4
		}]
	},
	"loginModel": {
		"bsonType": "string",
		"title": "登录模型",
		"enum": [{
			"text": "默认",
			"value": "default"
		}]
	},
	"loginThird": {
		"bsonType": "array",
		"arrayType": "string",
		"title": "第三方登录",
		"description": "App时允许的第三方登录。包含name：名称；icon：图标等信息",
		"enum": [{
			"text": "微信",
			"value": "wechat",
			"icon": "pay-wechat"
		},{
			"text": "苹果账号",
			"value": "apple",
			"icon": "apple"
		},{
			"text": "支付宝",
			"value": "alipay",
			"icon": "pay-ali"
		}]
	},
	"user_id": {
		"bsonType": "string",
		"title": "用户",
		"foreignKey": "a-user-test._id",
		"foreignField": "name",
		"spaceName": spaceName
	},
	"companyInfo": {
		"bsonType": "object",
		"title": "公司信息",
		"description": "该公司的基础信息，至少包含开票的基础信息",
		"hideLabel": true,
		"properties": {
			"name": {
				"bsonType": "string",
				"title": "公司名称",
				"required": true
			},
			"TIN": {
				"bsonType": "string",
				"title": "纳税人识别号"
			},
			"bank": {
				"bsonType": "string",
				"title": "开户银行"
			},
			"account": {
				"bsonType": "string",
				"title": "银行账号"
			},
			"address": {
				"bsonType": "string",
				"title": "公司地址"
			},
			"phone": {
				"bsonType": "string",
				"title": "公司电话"
			},
			"email": {
				"bsonType": "string",
				"title": "公司邮箱"
			}
		}
	},
	"cluesource": {
		"bsonType": "int",
		"title": "线索来源",
		"enum": [{
			"text": "虚拟占位",
			"value": 0
		},{
			"text": "批量导入",
			"value": 1,
			"description": "一般从外部购买或者拿来的线索，批量导入"
		},{
			"text": "分享裂变",
			"value": 2
		},{
			"text": "客户到店",
			"value": 3,
			"description": "客户到店时，接待人员临时录入的线索"
		},{
			"text": "基地采集",
			"value": 4,
			"description": "从基地采集的线索，也支持批量导入。该场景下没有商单信息"
		},{
			"text": "商单采集",
			"value": 5,
			"description": "从商单采集的线索，也支持批量导入。该场景下一般也有基地信息"
		},{
			"text": "供应商录入",
			"value": 7,
			"description": "供应商通过站点操作录入或导入过来"
		},{
			"text": "供应商推送",
			"value": 8,
			"description": "供应商通过提供的API接口推送过来"
		},{
			"text": "产品人员",
			"value": 9,
			"description": "产品专员有分享信息后会第一时间写入线索表中，作为分享链的最顶层存在。如果没有分享，就不写入"
		}]
	},
	"cluestatus": {
		"bsonType": "int",
		"title": "线索状态",
		"enum": [{
			"text": "未浏览",
			"value": 0,
			"description": "比如导入的线索，线索该未浏览"
		},{
			"text": "未报名",
			"value": 1,
			"description": "该线索仅浏览"
		},{
			"text": "审核中",
			"value": 2,
			"description": "该线索已报名，但是报名审核中，未通过"
		},{
			"text": "未支付",
			"value": 3,
			"description": "该线索已报名通过"
		},{
			"text": "支付中",
			"value": 4,
			"description": "已生成支付订单，但是还未完成支付。取消支付回到3，完成支付就到5。234都属于已报名"
		},{
			"text": "已支付",
			"value": 5,
			"description": "完成了支付"
		},{
			"text": "退款申请中",
			"value": 6,
			"description": "审核拒绝退回到5，审核通过就到7"
		},{
			"text": "已退款",
			"value": 7,
			"description": "完成了退款，实际等同于2。退款记录在d-follow的status == refund中查询"
		}]
	},
	"description": {
		"bsonType": "string",
		"title": "说明",
		"typeDetail": "textarea"
	},
	"remark": {
		"bsonType": "string",
		"title": "备注信息",
		"typeDetail": "textarea",
		"showType": 1
	},
	"creator": {
		"bsonType": "string",
		"title": "创建人",
		"description": "创建人信息。不可改",
		"foreignKey": "a-user._id",
		"foreignField": "name",
		"spaceName": spaceName,
		"disabled": true,
		"showType": 2
	},
	"timestamp": {
		"bsonType": "timestamp",
		"title": "创建时间",
		"is_single": true,
		"disabled": true,
		"showType": 0
	},
	"creat_type": {
		"bsonType": "int",
		"title": "创建类型",
		"disabled": true,
		"showType": 2,
		"enum": [
			{
				"text": "指定创建",
				"value": -2
			},
			{
				"text": "自定义创建",
				"value": -1
			},
			{
				"text": "一般性创建",
				"value": 0
			},
			{
				"text": "覆盖仅保留id创建",
				"value": 1
			},
			{
				"text": "覆盖不保留id创建",
				"value": 2
			},
			{
				"text": "删除原数据后强制新增",
				"value": 3
			},
			{
				"text": "默认的复制操作创建",
				"value": 4
			},
			{
				"text": "主要保留数据code的复制操作创建",
				"value": 5
			},
			{
				"text": "自定义的复制操作创建",
				"value": 9
			}
		]
	},
	"alert_user": {
		"bsonType": "string",
		"title": "修改人",
		"description": "修改人信息。可改",
		"foreignKey": "a-user._id",
		"foreignField": "name",
		"spaceName": spaceName,
		"disabled": true,
		"showType": 3
	},
	"alert_time": {
		"bsonType": "timestamp",
		"title": "修改时间",
		"is_single": true,
		"disabled": true,
		"showType": 3
	},
	"remove": {
		"bsonType": "bool",
		"title": "是否删除",
		"disabled": true,
		"showType": -2
	},
	"HISTORY": {
		"bsonType": "array",
		"arrayType": "object",
		"title": "修改记录",
		"description": "系统修改时会自动记录。该字段特殊，所以用大写以区分",
		"showType": -2
	},
	...custom
}